package com.liuche.pictureserver.service;

import com.liuche.pictureserver.common.resp.BaseResponse;
import com.liuche.pictureserver.pojo.domain.UserDO;
import com.liuche.pictureserver.pojo.req.user.UserLoginReqVO;
import com.liuche.pictureserver.pojo.req.user.UserRegistryReqVO;
import com.liuche.pictureserver.pojo.resp.user.UserInfoRespVO;
import jakarta.servlet.http.HttpServletRequest;

/**
 * 用户相关service
 *
 * @author liuche
 */
public interface IUserService {
    /**
     * 用户注册
     *
     * @param req 注册请求
     * @return 用户id
     */
    Long registry(UserRegistryReqVO req);

    /**
     * 用户登录
     *
     * @param req     登录请求
     * @param request 请求头信息
     * @return 结果
     */
    BaseResponse<UserInfoRespVO> login(UserLoginReqVO req, HttpServletRequest request);

    /**
     * 获取当前登录用户信息
     *
     * @param request 请求信息
     * @return 结果
     */
    UserDO getCurUser(HttpServletRequest request);

    /**
     * 退出登录
     *
     * @param request 请求信息
     * @return 结果
     */
    Boolean logout(HttpServletRequest request);

    /**
     * 根据id查询用户信息
     *
     * @param userId 用户id
     * @return 结果
     */
    UserDO queryById(Long userId);
}
